import java.util.ArrayList;
import java.util.List;

public class Solution {
    //旋转图像
    public void rotate(int[][] matrix) {
        int n = matrix.length;
        //旋转90度是第一行变为最后一列，第二行变为倒数第二列。。。
        //将每一行存入链表中
        List<int[]> list = new ArrayList<>();
        for(int i = 0; i < n; i++) {
            list.add(matrix[i]);
        }
        //将数据填入原来的表中
        for(int i = 0; i < n; i++) {
            int[] arr = list.get(n-i-1);
            for(int j = 0; j < n; j++) {
                matrix[j][i] = arr[j];
            }
        }
    }
    //矩阵置零
    public void setZeroes(int[][] matrix) {
        //行数为n
        int n = matrix.length;
        //列数为m
        int m = matrix[0].length;
        //遍历数组，找到为0的位置记,记录下标，将数组对应位置置为1
        int[] cNum = new int[n];
        int[] lNum = new int[m];
        //遍历矩阵，记录行数和列数
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                if(matrix[i][j] == 0) {
                    cNum[i] = 1;
                    lNum[j] = 1;
                }
            }
        }
        //遍历两个数组，置为1的对应矩阵中的行列变为0。
        for(int i = 0; i < n; i++) {
            if(cNum[i] == 1) {
                //对应行数置为0
                for(int j = 0; j < m; j++) {
                    matrix[i][j] = 0;
                }
            }
        }
        for(int i = 0; i < m; i++) {
            if(lNum[i] == 1) {
                //对应列数置为0
                for(int j = 0; j < n; j++) {
                    matrix[j][i] = 0;
                }
            }
        }
    }
}
